<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style lang="css">
    @import url(https://fonts.googleapis.com/css?family=Lato);

    body {
      display: flex;
      height: 100vh;
      justify-content: center;
      align-items: center;
      text-align: center;
      background: #222;
    }

    .btn {
      --hue: 190;
      --ease-in-duration: 0.25s;
      --ease-out-duration: 0.65s;
      --ease-out-delay: var(--ease-in-duration);
      position: relative;
      padding: 1rem 3rem;
      font-size: 1rem;
      line-height: 1.5;
      color: white;
      text-decoration: none;
      background-color: hsl(var(--hue), 100%, 41%);
      border: 1px solid hsl(var(--hue), 100%, 41%);
      outline: transparent;
      overflow: hidden;
      cursor: pointer;
      user-select: none;
      white-space: nowrap;
      transition: 0.25s;
    }

    .btn:hover {
      background: hsl(var(--hue), 100%, 31%);
    }

    .btn-primary {
      --hue: 171;
    }

    .btn-ghost {
      color: hsl(var(--hue), 100%, 41%);
      background-color: transparent;
      border-color: hsl(var(--hue), 100%, 41%);
    }

    .btn-ghost:hover {
      color: white;
    }

    .btn-border-stroke {
      border-color: hsla(var(--hue), 100%, 41%, 0.35);
    }

    .btn-border-stroke .btn-borders {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }

    .btn-border-stroke .btn-borders .border-top {
      position: absolute;
      top: 0;
      width: 100%;
      height: 1px;
      background: hsl(var(--hue), 100%, 41%);
      transform: scaleX(0);
      transform-origin: left;
    }

    .btn-border-stroke .btn-borders .border-right {
      position: absolute;
      right: 0;
      width: 1px;
      height: 100%;
      background: hsl(var(--hue), 100%, 41%);
      transform: scaleY(0);
      transform-origin: bottom;
    }

    .btn-border-stroke .btn-borders .border-bottom {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 1px;
      background: hsl(var(--hue), 100%, 41%);
      transform: scaleX(0);
      transform-origin: left;
    }

    .btn-border-stroke .btn-borders .border-left {
      position: absolute;
      left: 0;
      width: 1px;
      height: 100%;
      background: hsl(var(--hue), 100%, 41%);
      transform: scaleY(0);
      transform-origin: bottom;
    }

    .btn-border-stroke .btn-borders .border-left {
      transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
    }

    .btn-border-stroke .btn-borders .border-bottom {
      transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
    }

    .btn-border-stroke .btn-borders .border-right {
      transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
    }

    .btn-border-stroke .btn-borders .border-top {
      transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
    }

    .btn-border-stroke:hover {
      color: hsl(var(--hue), 100%, 41%);
      background: transparent;
    }

    .btn-border-stroke:hover .border-top,
    .btn-border-stroke:hover .border-bottom {
      transform: scaleX(1);
    }

    .btn-border-stroke:hover .border-left,
    .btn-border-stroke:hover .border-right {
      transform: scaleY(1);
    }

    .btn-border-stroke:hover .border-left {
      transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
    }

    .btn-border-stroke:hover .border-bottom {
      transition: var(--ease-in-duration) cubic-bezier(1, 0, 0.8, 0);
    }

    .btn-border-stroke:hover .border-right {
      transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
    }

    .btn-border-stroke:hover .border-top {
      transition: var(--ease-out-duration) var(--ease-out-delay) cubic-bezier(0.2, 1, 0.2, 1);
    }

    .btn-text-float-up::after {
      position: absolute;
      content: attr(data-text);
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      display: flex;
      justify-content: center;
      align-items: center;
      opacity: 0;
      transform: translateY(35%);
      transition: 0.25s ease-out;
    }

    .btn-text-float-up .btn-text {
      display: block;
      transition: 0.75s 0.1s cubic-bezier(0.2, 1, 0.2, 1);
    }

    .btn-text-float-up:hover .btn-text {
      opacity: 0;
      transform: translateY(-25%);
      transition: 0.25s ease-out;
    }

    .btn-text-float-up:hover::after {
      opacity: 1;
      transform: translateY(0);
      transition: 0.75s 0.1s cubic-bezier(0.2, 1, 0.2, 1);
    }
  </style>
</head>

<body>
  <button data-text="Start" class="btn btn-primary btn-ghost btn-border-stroke  btn-text-float-up">
    <div class="btn-borders">
      <div class="border-top"></div>
      <div class="border-right"></div>
      <div class="border-bottom"></div>
      <div class="border-left"></div>
    </div>
    <span class="btn-text">Start</span>
  </button>
</body>

</html>